GSlice is better for allocating structs.
https://bugzilla.gnome.org/show_bug.cgi?id=733407
/* Create the tree itself */
- tree = g_new0(GtkTextBTree, 1);
+ tree = g_slice_new0 (GtkTextBTree);
tree->root_node = root_node;
tree->table = table;
tree->views = NULL;
g_object_unref (tree->selection_bound_mark);
tree->selection_bound_mark = NULL;
- g_free (tree);
+ g_slice_free (GtkTextBTree, tree);
}
}
g_return_if_fail (tree != NULL);
- view = g_new (BTreeView, 1);
+ view = g_slice_new (BTreeView);
view->view_id = layout;
view->layout = layout;
*/
last_line = get_last_line (tree);
- line_data = g_new (GtkTextLineData, 1);
+ line_data = g_slice_new (GtkTextLineData);
line_data->view_id = layout;
line_data->next = NULL;
line_data->width = 0;
*/
last_line = get_last_line (tree);
line_data = _gtk_text_line_remove_data (last_line, view_id);
- g_free (line_data);
+ g_slice_free (GtkTextLineData, line_data);
gtk_text_btree_node_remove_view (view, tree->root_node, view_id);
view->layout = (gpointer) 0xdeadbeef;
view->view_id = (gpointer) 0xdeadbeef;
-
- g_free (view);
+
+ g_slice_free (BTreeView, view);
}
void
{
GtkTextLineData *line_data;
- line_data = g_new (GtkTextLineData, 1);
+ line_data = g_slice_new (GtkTextLineData);
line_data->view_id = layout;
line_data->next = NULL;
{
Range *r;
- r = g_new (Range, 1);
+ r = g_slice_new (Range);
r->buffer = gtk_text_iter_get_buffer (range_start);
g_object_ref (r->buffer);
*r->range_end = *r->whole_end;
g_object_unref (r->buffer);
- g_free (r);
+ g_slice_free (Range, r);
}
static void
free_clipboard_request (ClipboardRequest *request_data)
{
g_object_unref (request_data->buffer);
- g_free (request_data);
+ g_slice_free (ClipboardRequest, request_data);
}
/* Called when we request a paste and receive the text data
}
else
{
- selection_clipboard = g_new (SelectionClipboard, 1);
+ selection_clipboard = g_slice_new (SelectionClipboard);
selection_clipboard->clipboard = clipboard;
selection_clipboard->ref_count = 1;
buffer->priv->selection_clipboards = g_slist_remove (buffer->priv->selection_clipboards,
selection_clipboard);
-
- g_free (selection_clipboard);
+
+ g_slice_free (SelectionClipboard, selection_clipboard);
}
}
remove_all_selection_clipboards (GtkTextBuffer *buffer)
{
GtkTextBufferPrivate *priv = buffer->priv;
+ GSList *l;
+
+ for (l = priv->selection_clipboards; l != NULL; l = l->next)
+ {
+ SelectionClipboard *selection_clipboard = l->data;
+ g_slice_free (SelectionClipboard, selection_clipboard);
+ }
- g_slist_foreach (priv->selection_clipboards, (GFunc)g_free, NULL);
g_slist_free (priv->selection_clipboards);
priv->selection_clipboards = NULL;
}
GtkTextIter *override_location,
gboolean default_editable)
{
- ClipboardRequest *data = g_new (ClipboardRequest, 1);
+ ClipboardRequest *data = g_slice_new (ClipboardRequest);
GtkTextIter paste_point;
GtkTextIter start, end;
g_free (cache->entries[i].attrs);
++i;
}
- g_free (cache);
+ g_slice_free (GtkTextLogAttrCache, cache);
}
static void
if (priv->log_attr_cache == NULL)
{
- priv->log_attr_cache = g_new0 (GtkTextLogAttrCache, 1);
+ priv->log_attr_cache = g_slice_new0 (GtkTextLogAttrCache);
priv->log_attr_cache->chars_changed_stamp =
_gtk_text_btree_get_chars_changed_stamp (get_btree (buffer));
}
formats = unregister_format (formats, *atom);
- format = g_new0 (GtkRichTextFormat, 1);
+ format = g_slice_new0 (GtkRichTextFormat);
format->mime_type = g_strdup (mime_type);
format->can_create_tags = FALSE;
format->user_data_destroy (format->user_data);
g_free (format->mime_type);
- g_free (format);
+ g_slice_free (GtkRichTextFormat, format);
}
static void
int_id = atoi (pixbuf_id);
pixbuf = get_pixbuf_from_headers (info->headers, int_id, error);
- span = g_new0 (TextSpan, 1);
+ span = g_slice_new0 (TextSpan);
span->pixbuf = pixbuf;
span->tags = NULL;
TextTagPrio *prio;
/* add the tag to the list */
- prio = g_new0 (TextTagPrio, 1);
+ prio = g_slice_new0 (TextTagPrio);
prio->prio = info->current_tag_prio;
prio->tag = info->current_tag;
if (text_len == 0)
return;
- span = g_new0 (TextSpan, 1);
+ span = g_slice_new0 (TextSpan);
span->text = g_strndup (text, text_len);
span->tags = g_slist_copy (info->tag_stack);
{
g_free (span->text);
g_slist_free (span->tags);
- g_free (span);
+ g_slice_free (TextSpan, span);
}
static void
if (prio->tag)
g_object_unref (prio->tag);
- g_free (prio);
+ g_slice_free (TextTagPrio, prio);
list = list->next;
}
int section_len;
Header *header;
GList *headers = NULL;
+ GList *l;
while (i < len)
{
if (i + 30 + section_len > len)
goto error;
- header = g_new0 (Header, 1);
+ header = g_slice_new0 (Header);
header->id = start + i;
header->length = section_len;
header->start = start + i + 30;
return g_list_reverse (headers);
error:
- g_list_free_full (headers, g_free);
+ for (l = headers; l != NULL; l = l->next)
+ {
+ header = l->data;
+ g_slice_free (Header, header);
+ }
+
+ g_list_free (headers);
g_set_error_literal (error,
G_MARKUP_ERROR,
GError **error)
{
GList *headers;
+ GList *l;
Header *header;
gboolean retval;
create_tags, error, headers->next);
out:
- g_list_free_full (headers, g_free);
+ for (l = headers; l != NULL; l = l->next)
+ {
+ header = l->data;
+ g_slice_free (Header, header);
+ }
+
+ g_list_free (headers);
return retval;
}
{
gtk_text_layout_invalidate_cache (layout, line, FALSE);
- g_free (line_data);
+ g_slice_free (GtkTextLineData, line_data);
}
/**
gtk_text_buffer_delete_mark (gtk_text_mark_get_buffer (scroll->mark),
scroll->mark);
g_object_unref (scroll->mark);
- g_free (scroll);
+ g_slice_free (GtkTextPendingScroll, scroll);
}
static void
DV(g_print(G_STRLOC"\n"));
- scroll = g_new (GtkTextPendingScroll, 1);
+ scroll = g_slice_new (GtkTextPendingScroll);
scroll->within_margin = within_margin;
scroll->use_align = use_align;
if (data->orig_end != NULL)
gtk_text_buffer_delete_mark (gtk_text_mark_get_buffer (data->orig_end),
data->orig_end);
- g_free (data);
+ g_slice_free (SelectionData, data);
}
static gboolean
GdkModifierType state;
priv = text_view->priv;
- data = g_new0 (SelectionData, 1);
+ data = g_slice_new0 (SelectionData);
data->granularity = granularity;
buffer = get_buffer (text_view);
}
g_object_unref (text_view);
- g_free (info);
+ g_slice_free (PopupInfo, info);
}
static void
gtk_text_view_do_popup (GtkTextView *text_view,
const GdkEvent *event)
{
- PopupInfo *info = g_new (PopupInfo, 1);
+ PopupInfo *info = g_slice_new (PopupInfo);
/* In order to know what entries we should make sensitive, we
* ask for the current targets of the clipboard, and when
{
GtkTextWindow *win;
- win = g_new (GtkTextWindow, 1);
+ win = g_slice_new (GtkTextWindow);
win->type = type;
win->widget = widget;
if (win->window)
text_window_unrealize (win);
- g_free (win);
+ g_slice_free (GtkTextWindow, win);
}
static void
{
GtkTextViewChild *vc;
- vc = g_new (GtkTextViewChild, 1);
+ vc = g_slice_new (GtkTextViewChild);
vc->type = GTK_TEXT_WINDOW_PRIVATE;
vc->widget = child;
{
GtkTextViewChild *vc;
- vc = g_new (GtkTextViewChild, 1);
+ vc = g_slice_new (GtkTextViewChild);
vc->widget = child;
vc->anchor = NULL;
g_object_unref (child->widget);
- g_free (child);
+ g_slice_free (GtkTextViewChild, child);
}
static void